home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus 2002 #11
/
Amiga Plus CD - 2002 - No. 11.iso
/
Tools
/
Freeware
/
Remapollo
/
Modules
/
MountENV.s
< prev
next >
Wrap
Text File
|
2002-10-27
|
3KB
|
171 lines
SECTION MountENVrs000000,CODE
include lvos
include systab.st
mc68000
clrFO
_exec fo.l 1
_allp3 fo.l 1
_all3 fo.l 1
_allp2 fo.l 1
_all2 fo.l 1
_allp1 fo.l 1
_all1 fo.l 1
_arg2 fo.l 1
_arg1 fo.l 1
ProgStart
moveq #RETURN_FAIL,d7
movea.l (4),a6
moveq #dvi_SIZEOF,d0
move.l #MEMF_PUBLIC!MEMF_CLEAR,d1
sys AllocMem
tst.l d0
beq _quit
movea.l d0,a2
iniFO a5,a0,d0
move.l a6,(_exec,a5)
lea (_all1,a5),a0
lea (_hand,pc),a1
bsr _alloc
move.l d0,(dvi_Handler,a2)
beq _err
move.l #2000,(dvi_Stacksize,a2)
moveq #5,d0
move.l d0,(dvi_Priority,a2)
moveq #-1,d0
move.l d0,(dvi_GlobVec,a2)
moveq #36,d0
lea (_dosn,pc),a1
sys OpenLibrary
tst.l d0
beq _err
movea.l d0,a6
moveq #LDF_ALL!LDF_READ,d1
sys LockDosList
move.l d0,d1
beq.b .ndl
lea (_env,pc),a0
move.l a0,d2
moveq #LDF_ALL,d3
sys FindDosEntry
move.l d0,d2
beq .nf
moveq #5,d7
.nf moveq #LDF_ALL!LDF_READ,d1
sys UnLockDosList
.ndl tst.l D2
bne _err2
lea (_envarc,pc),a0
move.l a0,d1
moveq #SHARED_LOCK,d2
sys Lock
move.l d0,d1
beq.b \nl
sys UnLock
\nl lea (_temp,pc),a0
move.l a0,d1
lea (_arg1,a5),a0
move.l a0,d2
moveq #0,d3
sys ReadArgs
move.l d0,d6
beq _err2
lea (_all2,a5),a0
lea (_env,pc),a1
move.l (_arg1,a5),d0
beq.b \narg
movea.l d0,a1
\narg bsr _alloc
move.l d0,(dvi_Name,a2)
beq.b _err3
move.l (_arg2,a5),d0
beq.b \narg2
lea (_all3,a5),a0
movea.l d0,a1
bsr.b _alloc
move.l d0,(dvi_Startup,a2)
\narg2 lea (_expn,pc),a1
movea.l a6,a4
movea.l (_exec,a5),a6
sys OldOpenLibrary
tst.l d0
beq.b _fail
movea.l d0,a6
movea.l a2,a0
moveq #0,d0
moveq #0,d1
sys AddDosNode
tst.l d0
beq.b .fn
moveq #RETURN_OK,d7
.fn movea.l a6,a1
movea.l (_exec,a5),a6
sys CloseLibrary
_fail movea.l a4,a6
_err3 move.l d6,d1
sys FreeArgs
_err2 movea.l a6,a1
movea.l (_exec,a5),a6
sys CloseLibrary
tst.l d7
beq _skip
_err moveq #dvi_SIZEOF,d0
movea.l a2,a1
sys FreeMem
moveq #2,d2
lea (_all1,a5),a2
.loop move.l (a2)+,d0
move.l (a2)+,d1
beq .roll
movea.l d1,a1
sys FreeMem
.roll dbf d2,.loop
_skip unlk a5
_quit move.l d7,D0
rts
_regs reg d2/a2/a3/a6
_alloc movem.l _regs,-(sp)
movea.l a0,a3
movea.l a1,a2
\1 tst.b (a1)+
bne.b \1
suba.l a2,a1
move.l a1,d0
subq.l #1,d0
beq.b \err
move.l d0,d2
move.l a1,d0
addq.l #1,d0
move.l d0,(a3)+
moveq #MEMF_PUBLIC,d1
movea.l (_exec,a5),a6
sys AllocMem
move.l d0,(a3)
beq.b \err
movea.l d0,a1
lsr.l #2,d0
move.b d2,(a1)+
\2 move.b (a2)+,(a1)+
bne.b \2
\err movem.l (sp)+,_regs
rts
; dc.b '$VER: MountENV 1.2 (28.3.2002)',10,13,0
_temp dc.b 'DEVNAME/K,STARTUP/F',0
_dosn dc.b 'dos.library',0
_expn dc.b 'expansion.library',0
_envarc dc.b 'ENVARC:',0
_hand dc.b 'L:HappyENV-handler',0
_env dc.b 'ENV',0
end